/*
 * Fibonacci.c
 *
 *  Created on: 24/03/2009
 *      Author: Delano Oliveira, Filipe Cavalcante
 */

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/time.h>

int[6] entradas = {3, 6, 8, 10, 50, 100};

int fibonacciIterativo(int n) {
	int antepenultimo, ultimo, atual, i;
	antepenultimo = 0;
	ultimo = 1;
	atual = 1;
	for (i = 2; i < n; i++) {
		antepenultimo = ultimo;
		ultimo = atual;
		atual = antepenultimo + ultimo;
	}
	return atual;
}

int fibonacciRecursivo(int n) {
	if (n == 1 || n == 2) {
		return 1;
	}
	return fibonacciRecursivo(n - 2) + fibonacciRecursivo(n - 1);
}

main() {

	int resultado, i;
	struct timeval tempo_inicial, tempo_final;
	double total;

	for (i = 0; i < 6; i++) {

		inicio = System.nanoTime();
		resultado = fibonacciIterativo(n);
		fim = System.nanoTime();
		System.out.println("T(Iterativo): resultado = " + resultado
				+ ", tempo = " + (fim - inicio));

		inicio = System.nanoTime();
		resultado = fibonacciRecursivo(n);
		fim = System.nanoTime();
		System.out.println("T(Recursivo): resultado = " + resultado
				+ ", tempo = " + (fim - inicio) + "\n");
	}
}
